import { http } from "@/utils/http";

// 项目数据类型定义（根据API文档4.2项目列表）
export interface Project {
  p_id: string; // 项目id
  p_name: string; // 项目名称
  p_price: string; // 项目价格
  p_duration: string; // 项目时长（分钟）
  p_status: string; // 状态：1 上架，-1 下架
  p_vipprice: string; // vip价格
  p_pic: string; // 项目图片
  p_img: string; // 项目详情图（表格显示用）
  p_hpic: string; // 项目头图（表格显示用）
  p_tags: string; // 项目标签
  p_info: string; // 项目介绍
  p_sort: string; // 排序
  p_ctime: string; // 创建时间
  p_etime: string; // 编辑时间
}

// 添加项目参数类型（根据API文档4.1添加项目）
export interface AddProjectParams {
  name: string; // 项目名称
  price: string; // 项目价格
  duration: string; // 项目时长
  status: string; // 状态：1 上架，-1 下架
  vipprice: string; // vip价格
  img_url: string; // banner链接地址
  main_url?: string; // 详情页内容图
  head_url?: string; // 详情页头图
  tags: string; // 项目标签
  info: string; // 项目介绍
  sort: string; // 排序
}

// 编辑项目参数类型（根据API文档4.3编辑项目）
export interface EditProjectParams {
  id: string; // 项目id
  name: string; // 项目名称
  price: string; // 项目价格
  duration: string; // 项目时长
  status: string; // 状态：1 上架，-1 下架
  vipprice: string; // vip价格
  img_url: string; // banner链接地址
  main_url?: string; // 详情页内容图
  head_url?: string; // 详情页头图
  tags: string; // 项目标签
  info: string; // 项目介绍
  sort: string; // 排序
}

// 项目列表查询参数类型（根据API文档4.2项目列表）
export interface ProjectListParams {
  name?: string; // 项目名称
  status?: string; // 项目状态：1 上架，-1 下架
}

// API返回结果类型
export interface ApiResult<T = any> {
  code: number; // 状态码：1 成功
  msg: string; // 描述
  data: T; // 数据
}

/** 添加项目（根据API文档4.1添加项目） */
export const addProject = (params: AddProjectParams) => {
  return http.request<ApiResult>("post", "/admin/project.php?act=add", {
    data: params
  });
};
/** 上传文件（根据API文档4.5上传文件） */
export const fileUpload = (file: File) => {
  return http.request<ApiResult>("post", "/admin/project.php?act=upload", {
    data: { file }
  });
};

/** 获取项目列表（根据API文档4.2项目列表） */
export const getProjectList = (params: ProjectListParams = {}) => {
  return http.request<ApiResult<Project[]>>(
    "post",
    "/admin/project.php?act=list",
    {
      data: params
    }
  );
};

/** 编辑项目（根据API文档4.3编辑项目） */
export const editProject = (params: EditProjectParams) => {
  return http.request<ApiResult>("post", "/admin/project.php?act=edit", {
    data: params
  });
};

/** 切换项目状态（根据API文档4.4切换状态） */
export const switchProjectStatus = (id: number) => {
  return http.request<ApiResult>("post", "/admin/project.php?act=switch", {
    data: { id }
  });
};
